

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<script type="text/javascript" src="helpman_topicinit.js"></script>

<title>MDA Transformations [Enterprise Architect User Guide]</title>

<meta name="keywords" content="Enterprise Architect, Sparx Systems, UML, MDA Transformation,MDA Transformation Overview,MDA Transformation Built-In,Model Driven Achitecture,Model Driven Achitecture Overview,Transformation,Transformation Dependencies,PIM,PIM Internal Bindings,Platform-Independent Model,Platform Specific Model,PSM,Internal Binding,Internal Binding PIM to PSM">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="Content-Style-Type" content="text/css" />

<link type="text/css" href="default.css" rel="stylesheet" />
<style type="text/css">
  A, A:Visited
  {
    color: #00F;
  }

  A:Active, A:Hover
  {
    color: #F00;
  }

  OL
  {
    margin: 5px 0 5px 48px;
  }

  UL
  {
    margin-bottom: 3px;
    margin-top: 0;
  }

  #nsr
  {
    background-color: #D4DFFF;
  }

  #nsr A
  {
    text-decoration: none;
  }

  #mainbody
  {
    padding: 8px;
  }

  .p_BodyText
  {
    padding: 5px 0;
  }
</style>



<style type="text/css" media="screen">
  BODY
  {
    background-color: #FFFFFF;
  }

  #nsr
  {
    padding: 6px 6px 0 6px;
    border-bottom: none;
    vertical-align: top;
    z-index: 2;
    visibility: visible;
    left: 0;
    top: 0;
    position: absolute;
  }

  #mainbody
  {
    left: 0;
    top: 0;
    margin: 0;
    position: absolute;
    padding: 10px;
    overflow: auto;
    height: 100%;
    z-index: 1;
    background-repeat: no-repeat;
    background-position: bottom right;
    background-attachment: fixed;
  }
</style>

<style type="text/css" media="print">
  #nsr
  {
    visibility: none;
  }

  #mainbody
  {
    overflow: visible;
  }
</style>
<script type="text/javascript" language="JavaScript" src="nonscroll.js"></script>

</head>
<body scroll="no">

<div id="page">



        <div id="content">
          <div id="content-inner">
          



  
          <div id="nsr">
            <table border="0" cellspacing="0" cellpadding="4" width="100%">
              <tr valign="top">
                <td align="left">
  


                  <p class="p_Heading1"><span class="f_Heading1">MDA Transformations</span></p>



  
                </td>
                <td align="right">
                  <a href="introduction.htm" onmouseover="document.images.main.src='button_main_h.gif'" onmouseout="document.images.main.src='button_main.gif'">
                    <img name="main" src="button_main.gif" border=0 alt="Return to Introduction">
                  </a>&nbsp;
    
                  <a href="theimportedclasselements.htm" onmouseover="document.images.prev.src='button_prev_h.gif'" onmouseout="document.images.prev.src='button_prev.gif'">
                    <img name=prev src="button_prev.gif" border=0 alt="Previous page" />
                  </a>&nbsp;
    
    
    
                  <a href="transformingelements.htm" onmouseover="document.images.next.src='button_next_h.gif'" onmouseout="document.images.next.src='button_next.gif'">
                    <img name=next src="button_next.gif" border=0 alt="Next page" />
                  </a>
    
    
                </td>
              </tr>
            </table>
          </div>
          <div id="mainbody">
  


                <p class="p_TextIndentedL1"><img src="mda_transforms.png" width="403" height="152" border="0" alt="mda_transforms"></p>
<p class="p_BodyText"><span class="f_BodyText">Model Driven Architecture (MDA) Transformations provide a fully configurable way of converting model elements and model fragments from one domain to another. This typically involves converting Platform-Independent Model (PIM) elements to Platform-Specific Model (PSM) elements. A single element from the PIM can be responsible for creating multiple PSM elements across multiple domains.</span></p>
<p class="p_BodyText"><span class="f_BodyText">Transformations are a huge productivity boost, and reduce the necessity of manually implementing stock Classes and elements for a particular implementation domain: for example, database tables generated from persistent PIM Classes. Enterprise Architect includes some basic built-in Transformations, such as PIM to Data Model, PIM to C#, PIM to Java and PIM to XSD. Sparx Systems will make further Transformations available over time, either as built in Transformations or as downloadable modules from the Sparx Systems website.</span></p>
<p class="p_BodyText"><span class="f_BodyText">For a further productivity boost, Enterprise Architect can automatically generate code for your transformed Classes that target code languages. See the </span><span class="f_MenuKeyField"><a href="transformingelements.htm#GenCode">Generate Code on result</a></span><span class="f_BodyText"> option on the </span><span class="f_UIControl">Model Transformation</span><span class="f_BodyText"> dialog.</span></p>
<p class="p_BodyText"><span class="f_BodyText">A Transformation is defined using Enterprise Architect's simple code generation template language, and involves no more than writing a template to create a simple intermediary source file. Enterprise Architect reads the source file and binds that to the new PSM.</span></p>
<p class="p_BodyText"><a name="td"></a><span class="f_BodyText">Enterprise Architect also creates internal bindings (</span><span class="f_BodyText" style="font-style: italic;">Transformation Dependencies</span><span class="f_BodyText">) between each PSM created and the original PIM. This is essential, as it enables you to forward synchronize from the PIM to the PSM many times, adding or deleting features as you go. For example, adding a new attribute to a PIM Class can be forward synchronized to a new column in the Data Model. You can observe the Transformation Dependencies for a package using the </span><span class="f_UIControl"><a href="hierarchy.htm">Hierarchy Window</a></span><span class="f_BodyText">. This enables you to check the impact of changes to a PIM element on the corresponding elements in each generated PSM, or to verify where a change required in a PSM should be initiated in the PIM (and also to reflect back in other PSMs). The Transformation Dependencies are a valuable tool in managing the <a href="traceability.htm">traceability</a> of your models.</span></p>
<p class="p_BodyText"><span class="f_BodyText">Enterprise Architect does not delete or overwrite any element features that were not originally generated by the transform. Therefore, you can add new methods to your elements, and Enterprise Architect does not act on them during the forward generation process.</span></p>
<div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 5px 0px 5px 13px;"><table cellspacing="0" cellpadding="2" border="0" style="border: none; border-spacing:0px;">
<tr style="text-align:left;vertical-align:bottom;">
<td valign="bottom" width="952" bgcolor="#efeff7" style="width:952px; background-color:#efeff7;"><p class="p_TiporNote" style="border-top: none; border-right: none; border-left: none;"><span class="f_TiporNote">Note:</span></p>
</td>
</tr>
<tr style="text-align:left;">
<td width="952" bgcolor="#f7f7ff" style="width:952px; background-color:#f7f7ff;"><p class="p_TiporNoteText"><span class="f_TiporNoteText">If you are using the </span><span class="f_TiporNoteText">Corporate, Business and Software Engineering, System Engineering or Ultimate edition</span><span class="f_TiporNoteText">, if security is enabled you must have </span><span class="f_TiporNoteText" style="font-weight: bold;"><a href="permissionlist.htm">Transform Package</a></span><span class="f_TiporNoteText"> access permission to perform an MDA Transform on a package.</span></p>
</td>
</tr>
</table>
</div>
<p class="p_BodyText"><span class="f_BodyText">The following diagram highlights how Transformations work and how they can significantly boost your productivity:</span></p>
<p class="p_TextIndentedL2"><img src="transformoverview.png" width="706" height="732" border="0" alt="TransformOverview"></p>
<p class="p_BodyText"><span class="f_BodyText">Transformations that are currently built-in include:</span></p>
<ul style="text-indent: 0px; margin-left: 30px; list-style-position: outside;">
<li><span class="f_Bulletlist1" style="font-weight: bold;">DDL -</span><span class="f_Bulletlist1"> Transforms platform-independent Class elements to platform-specific table elements</span></li>
<li><span class="f_Bulletlist1" style="font-weight: bold;">EJB Entity -</span><span class="f_Bulletlist1"> Transforms platform-independent Class elements to packages containing the Class and Interface elements that comprise an EJB Entity Bean</span></li>
<li><span class="f_Bulletlist1" style="font-weight: bold;">EJB Session - </span><span class="f_Bulletlist1">Transforms platform-independent Class elements to packages containing the Class and Interface elements that comprise an EJB Session Bean</span></li>
<li><span class="f_Bulletlist1" style="font-weight: bold;">Java - </span><span class="f_Bulletlist1">Transforms platform-independent elements to Java language elements</span></li>
<li><span class="f_Bulletlist1" style="font-weight: bold;">JUnit</span><span class="f_Bulletlist1"> -</span><span class="f_Bulletlist1"> Converts a Java model to a model where test methods are created for each public method of any original Class</span></li>
<li><span class="f_Bulletlist1" style="font-weight: bold;">C# -</span><span class="f_Bulletlist1"> Converts a PIM to a standard C# implementation set</span></li>
<li><span class="f_Bulletlist1" style="font-weight: bold;">NUnit -</span><span class="f_Bulletlist1"> Converts a .Net language specific model to a model where test methods are created for each public method of any original Class</span></li>
<li><span class="f_Bulletlist1" style="font-weight: bold;">WSDL -</span><span class="f_Bulletlist1"> Converts a simple representation of a WSDL interface into the elements required to generate that interface</span></li>
<li><span class="f_Bulletlist1" style="font-weight: bold;">XSD -</span><span class="f_Bulletlist1"> Transforms platform-independent elements to XSD elements.</span></li>
</ul>
<p class="p_BodyText"><span class="f_BodyText">&nbsp;</span><br>
<span class="f_BodyText">Transformations are described in the following topics:</span></p>
<ul style="text-indent: 0px; margin-left: 30px; list-style-position: outside;">
<li><span class="f_Bulletlist1" style="font-style: italic;"><a href="transformingelements.htm">Transform Elements</a></span></li>
<li><span class="f_Bulletlist1" style="font-style: italic;"><a href="importingtransforms.htm">Import Transformations</a></span></li>
<li><span class="f_Bulletlist1" style="font-style: italic;"><a href="transformationtemplates.htm">Transformation Templates</a></span></li>
<li><span class="f_Bulletlist1" style="font-style: italic;"><a href="builtintransformations.htm">Built-in Transformations</a></span></li>
<li><span class="f_Bulletlist1" style="font-style: italic;"><a href="writingtransformations.htm">Write Transformations</a></span></li>
<li><span class="f_Bulletlist1" style="font-style: italic;"><a href="chainingtransformations.htm">Chaining Transformations</a></span></li>
</ul>




            </div>
          </div>
        </div>



</div>


</body>
</html>
